import updateNodeElement from './updateNodeElement'
import mountElement from './mountElement'

export default function createDOMElement (virtualDOM) {
    // 将 virtualDOM 转换成真实 DOM
    let newElement = null
    if (virtualDOM.type === 'text') {
        // 文本节点
        newElement = document.createTextNode(virtualDOM.props.textContent)
    } else {
        // 元素节点
        newElement = document.createElement(virtualDOM.type)
        // 为元素添加属性
        updateNodeElement(newElement, virtualDOM)
    }

    // 为每个创建的元素都添加一个对应的 Virtual DOM 对象
    newElement._virtualDOM = virtualDOM
    // 递归创建子节点
    virtualDOM.children.forEach(child => {
        mountElement(child, newElement)
    })

    if (virtualDOM.props && virtualDOM.props.ref) {
        virtualDOM.props.ref(newElement)
    }

    return newElement
}